package com.zhoukai.service;

import com.zhoukai.domain.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhoukai.domain.SimpleUser;
import com.zhoukai.dto.MenuDto;

import java.util.List;

/**
 * @Description TODO
 * @Author Mr.ZHOU
 * @Date Created in 2021/12/15 11:13
 */

public interface MenuService {
        /**
         * 查询菜单信息
         * 如查用户是超级管理员，那么查询所以菜单和权限
         * 如果用户是普通用户，那么根据用户ID关联角色和权限
         * @param isAdmin 是否是超级管理员
         * @param  simpleUser  如果isAdmin=true  simpleUser可以为空
         */
        public List<Menu> selectMenuTree(boolean isAdmin, SimpleUser simpleUser);
    /**
     * 根据条件查询所有菜单不分页
     */
    List<Menu> listAllMenus(MenuDto menuDto);

    /**
     * 添加菜单或权限
     */
    int addMenu(MenuDto menuDto);

    /**
     * 根据ID查询一个菜单
     */
    Menu getMenuById(Long menuId);

    /**
     * 修改菜单
     */
    int updateMenu(MenuDto menuDto);

    /**
     * 根据ID删除菜单或权限
     */
    int deleteMenuById(Long menuId);

    /**
     * 根据菜单或权限ID查询当前菜单或权限有没有子节点
     */
    boolean hasChildByMenuId(Long menuId);


    Menu getOne(Long menuId);

    /**
     * 根据角色ID查询菜单权限ID数据
     * @param roleId
     * @return
     */
    List<Long> getMenusIdsByRoleId(Long roleId);

    List<Menu> getPermsByUserId(Long userId);
}
